package com.example.supplychainbackend.service;

import com.example.supplychainbackend.controller.dto.blockchain.UploadInfo;
import com.example.supplychainbackend.controller.dto.project.*;
import com.example.supplychainbackend.controller.dto.project.analysis.ProjectAnalysisDto;
import com.example.supplychainbackend.controller.dto.user.UserSigDto;
import jakarta.transaction.Transactional;
import org.springframework.web.multipart.MultipartFile;

import java.io.IOException;
import java.util.List;

public interface ProjectService {
    //项目计划增删改查
    List<ProjectPlanDto> listProjectPlans();
    ProjectPlanDto getProjectPlan(String id);
    @Transactional
    String createProjectPlan(String salesOrderNo, UserSigDto sigDto);

    ProjectPlanDto updateProjectPlan(String id, ProjectPlanDto form);
    //void deleteProjectPlan(Long id);
    //项目进度增删改查
    List<ProjectProgressDto> listProjectProgress();

//    ProjectProgressDto getProjectProgress(Long id);
//    Long createProjectProgress(ProjectProgressDto form);
//    ProjectProgressDto updateProjectProgress(Long id, ProjectProgressDto form);
//    void deleteProjectProgress(Long id);

    //项目文档增删改查
    List<ProjectDocsDto> listProjectDocs();
    ProjectDocsDto getProjectDocs(String id);
    String createProjectDocs(ProjectDocsDto form);
    ProjectDocsDto updateProjectDocs(String id, ProjectDocsDto form);
    //void deleteProjectDocs(String id);

    List<ProjectFolderFileDto> getProjectDocsFile(String projectId, String folderId);

    String createProjectDocsFolder(ProjectFolderDto form);

    void abortProjectDocsFolderFile(String fileId);

    Long createProjectNode(ProjectNodeDto form);
    List<ProjectNodeDto> getProjectNodes();

    ProjectAnalysisDto projectAnalysis();
    List<ProjectPlanDto> test(Integer status);

    String uploadProjectDocsFile(MultipartFile file, String folderId) throws IOException;

    UploadInfo uploadToChainPlan(String id);

    UploadInfo uploadToChainDocs(String id);

    List<ProjectPlanDto> listProjectPlansByEid(String eid);

    List<ProjectDocsDto> listProjectDocsByEid(String eid);
}
